#include <string>
#include "Schedule.h"
#include "Stand.h"
#include "AircraftType.h"

#ifndef AIRCRAFT
#define AIRCRAFT 

/*------------------------------------------------------------
/ Aircraft Class
/ Description: A class which creates instances of Aircraft 
/				objects. The object contains all information
/				needed of a n aircraft, including ID, Type,
/				the schedule, location, and associated airline
------------------------------------------------------------*/
class Aircraft{
	private:
		int aircraftID;					//unique identifier
		AircraftType *aircraftType;		//defines which of the 3 types the aircraft is
		Schedule* schedule;				//holds the whole schedule for the aircraft
		std::string currentLocation;	//determines if the aircraft is in the air or at the airport
		std::string airline;			//determines which airline the aircraft is a part of
		Stand* currentStand;			//tells us what stand the aircraft is at currently
		Flight* nextFlight;				//holds the next flight for the aircraft

	public:
		Schedule* aircraftSchedule;
		Aircraft(void);
		Aircraft(int, AircraftType*, Schedule*, std::string, std::string);
		~Aircraft(void);
		int getAircraftID();
		AircraftType* getAircraftType();
		std::string getAirline();
		void setAirline(std::string);
		std::string getCurrentLocation();
		void setCurrentLocation(std::string);
		Stand* getCurrentStand ();
		void setCurrentStand (Stand*);
		Flight* getNextFlight ();
		void setNextFlight (Flight*);
		int checkStandCompatibility(Stand*);
		Schedule* getSchedule();
		void checkConflictingFlights();
};

#endif